package errs

import (
	"fmt"
	"strings"
)

type Err struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

func New(code, msg string) Err {
	return Err{code, msg}
}

func NewF(err error) Err {
	e := err.Error()
	i := strings.Index(e, ":")
	if i == -1 {
		return Err{Code: "ERROR", Message: e}
	}
	return Err{Code: e[0:i], Message: e[i+1:]}
}

func (e Err) Error() string {
	return e.Code + ":" + e.Message
}

func (e Err) SetMessage(msg string) Err {
	return New(e.Code, msg)
}

func (e Err) MessageF(args ...interface{}) Err {
	return New(e.Code, fmt.Sprintf(e.Message, args...))
}
